I have a script that gets kicked off late night that opens just about every module in my project (in the mid 100s) and dumps data to a text file. Sometime during its run, it craps out this message:
DOORS: ASSERTION FAILED, Line 2609, .\Document.cpp: !NLS_("Bad data: No entry in BSD for baseline set.")
SystemAdmin - Mon Mar 21 18:51:58 EDT 2011 |
Re: Bad data: No entry in BSD for baseline set. Mathias Mamsch, IT-QBase GmbH, Consultant for Requirement Engineering and D00RS |
Re: Bad data: No entry in BSD for baseline set. But I've had a few of these massive scripts over time and found its important to know exactly where the script is when it aborts. print statements work rather well since they force the DOS window to stay open even after DOORS exists (or aborts), allowing you to see them. Also, I found that writing to a huge report file may better be done by frequently closing the output file and appending it right away. Thus, if DOORS aborts at least you get data up to that point. While closing and appending can be done for every output line, perhaps it could be done after you announce the opening of a module; thus if DOORS aborts you know where the script was. Once you find the offending module you should play with it interactively, such as archiving it, to see if its corrupted or whatever. Also, these massive scripts will require you to frequently close residually open modules often. Perhaps every time you open a folder to find a module, you should close all modules: for mod in database do { close(mod, false) }
|
Re: Bad data: No entry in BSD for baseline set. I do not open baselines during the nightly script, only current. There are no BSD in the folder, since my baseline set script deletes the BSD after performing the baseline set; but why would this be an issue for one folder out of fifty? Thanks. |
Re: Bad data: No entry in BSD for baseline set. SystemAdmin - Wed Mar 23 11:58:43 EDT 2011
Don't know.
void ack (string Message) { print Message "\n"}
void acknowlege(string Message) { ack(Message)}
void warningBox(string Message) { ack(Message)}
void errorBox (string Message) { ack(Message)}
#include <my batch script>
|
Re: Bad data: No entry in BSD for baseline set. That script I mentioned, the one that makes baseline sets, was used on the offending module's part folder at least once. Sometime after using it, the owners of this part decided to do some major redecorating. They had me remove one of their modules (which would have been included in at least one baseline set) and make a copy of a second module that was then reworked into something like the one removed. So this copied/reworked module now has the same name as the one removed. I suspect something is complaining about an aspect or artifact of the removal/copy operations in relation to a baseline set. If whatever is complaining is using the uniqueID of modules, this shouldn't happen, right? But if it's using fullName of modules, then I can see how this error might occur. Aside [1]: Does anyone know if IBM support people troll these forums? Aside [2]: I stopped running the script automatically at night. I broke it up into pieces and now someone runs it in the morning. It wasn't just this error that made me finally decide to stop, merely one straw on the heap on the camel's back. Thanks again for your interest and suggestions. |